package cn.zn.flow.service;

import cn.hutool.json.JSONArray;
import cn.zn.flow.entity.Flow;
import cn.zn.flow.vo.FlowApproveVo;
import cn.zn.flow.vo.FlowPageVo;
import cn.zn.user.entity.SysUser;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 审批流程 服务类
 * </p>
 *
 * @author zn-admin
 * @since 2021-06-28
 */
public interface FlowService extends IService<Flow> {

    /**
     * 创建流程
     *
     * @param mainTable 主表
     * @param title     标题
     * @param beginUser 发起人
     * @param flowNodes 审批节点
     * @return 结果
     */
    String createFlow(String mainTable, String title, SysUser beginUser, JSONArray flowNodes);

    /**
     * 删除流程
     *
     * @param id id
     */
    void deleteFlowById(String id);

    /**
     * 删除流程
     *
     * @param ids ids
     */
    void deleteFlowById(List<String> ids);

    /**
     * 获取流程信息
     *
     * @param id 流程id
     * @return 结果
     */
    Flow selectFlowInfo(String id, Boolean edit);

    /**
     * 获取审批列表
     *
     * @param vo 条件
     * @return 结果
     */
    Object selectFlowListByUserCode(FlowPageVo vo);

    /**
     * 签核
     *
     * @param flowId 流程id
     * @param vo     vo
     */
    void approve(String flowId, FlowApproveVo vo);

}
